package tornadoj.web;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Created by tinyms on 13-12-20.
 */

/**
 * 路由器
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Route {
    /**
     * Route名称,例如:'/path/path1/..' or 'path/path1/..'
     *
     * @return
     */
    String name() default "";

    /**
     * Get参数正则表达式,使/path/path1.html?paramName=value更友好,它将被描述成这样:/path/path1/value.html
     * 例如: 传统Url模式:/usr/details.html?date=2012-12-12, 新的Url模式: /usr/details/2012-12-12.html
     * 在这个例子中paramPatterns将设置为'\d{4}-\d{2}-\d{2}'
     * <p/>
     * 注意, 如果设置了参数正则表达式, 访问时会严格检查,不匹配则访问出错
     *
     * @return
     */
    String paramPatterns() default "";

    /**
     * Get参数值提取正则表达式,/usr/details/2012-12-12.html使用'\d{4}-\d{2}-\d{2}'<br/>
     * 也可以用'\d+'一个个提取,所有参数值都被依次放在一个List<String>中,即HttpContent.plainParams.<br/>
     * HttpContent也提供访问Get参数值的方法,可省去类型转换的步骤.
     *
     * @return
     */
    String paramExtractor() default "";

    /**
     * 是否开启用户认证
     *
     * @return
     */
    boolean auth() default false;
}
